# Spreadsheet::ParseExcel::Dump
#  by Kawai, Takanori (Hippo2000) 2001.2.2
# This Program is ALPHA version.
#==============================================================================
# Spreadsheet::ParseExcel::Dump
#==============================================================================
package Spreadsheet::ParseExcel::Dump;
require Exporter;
use strict;
use vars qw($VERSION @ISA);
@ISA = qw(Exporter);
$VERSION=0.01;
sub subDUMP($$$$);
sub OpName($);
my %NameTbl = (
#P291
    0x0A    =>'EOF',                    0x0C    =>'CALCCOUNT',
    0x0D    =>'CALCMODE',               0x0E    =>'PRECISION',
    0x0F    =>'REFMODE',                0x10    =>'DELTA',
    0x11    =>'ITERATION',              0x12    =>'PROTECT',
    0x13    =>'PASSWORD',               0x14    =>'HEADER',

    0x15    =>'FOOTER',                 0x16    =>'EXTERNCOUNT',
    0x17    =>'EXTERNSHEET',            0x19    =>'WINDOWPROTECT',
    0x1A    =>'VERTICALPAGEBREAKS',     0x1B    =>'HORIZONTALPAGEBREAKS',
    0x1C    =>'NOTE',                   0x1D    =>'SELECTION',
    0x22    =>'1904',                   0x26    =>'LEFTMARGIN',

    0x27    =>'RIGHTMARGIN',            0x28    =>'TOPMARGIN',
    0x29    =>'BOTTOMMARGIN',           0x2A    =>'PRINTHEADERS',
    0x2B    =>'PRINTGRIDLINES',         0x2F    =>'FILEPASS',
    0x3C    =>'COUNTINUE',              0x3D    =>'WINDOW1',
    0x40    =>'BACKUP',                 0x41    =>'PANE',

    0x42    =>'CODEPAGE',               0x4D    =>'PLS',
    0x50    =>'DCON',                   0x51    =>'DCONREF',
#P292
    0x52    =>'DCONNAME',               0x55    =>'DEFCOLWIDTH',
    0x59    =>'XCT',                    0x5A    =>'CRN',
    0x5B    =>'FILESHARING',            0x5C    =>'WRITEACCES',
    0x5D    =>'OBJ',                    0x5E    =>'UNCALCED',
    0x5F    =>'SAVERECALC',             0x60    =>'TEMPLATE',

    0x63    =>'OBJPROTECT',             0x7D    =>'COLINFO',
    0x7E    =>'RK',                     0x7F    =>'IMDATA',
    0x80    =>'GUTS',                   0x81    =>'WSBOOL',
    0x82    =>'GRIDSET',                0x83    =>'HCENTER',
    0x84    =>'VCENTER',                0x85    =>'BOUNDSHEET',

    0x86    =>'WRITEPROT',              0x87    =>'ADDIN',
    0x88    =>'EDG',                    0x89    =>'PUB',
    0x8C    =>'COUNTRY',                0x8D    =>'HIDEOBJ',
    0x90    =>'SORT',                   0x91    =>'SUB',
    0x92    =>'PALETTE',                0x94    =>'LHRECORD',

    0x95    =>'LHNGRAPH',               0x96    =>'SOUND',
    0x98    =>'LPR',                    0x99    =>'STANDARDWIDTH',
    0x9A    =>'FNGROUPNAME',            0x9B    =>'FILTERMODE',
    0x9C    =>'FNGROUPCOUNT',
#P293
    0x9D    =>'AUTOFILTERINFO',         0x9E    =>'AUTOFILTER',
    0xA0    =>'SCL',                    0xA1    =>'SETUP',
    0xA9    =>'COORDLIST',              0xAB    =>'GCW',
    0xAE    =>'SCENMAN',                0xAF    =>'SCENARIO',
    0xB0    =>'SXVIEW',                 0xB1    =>'SXVD',

    0xB2    =>'SXV',                    0xB4    =>'SXIVD',
    0xB5    =>'SXLI',                   0xB6    =>'SXPI',
    0xB8    =>'DOCROUTE',               0xB9    =>'RECIPNAME',
    0xBC    =>'SHRFMLA',                0xBD    =>'MULRK',
    0xBE    =>'MULBLANK',               0xBF    =>'TOOLBARHDR',
    0xC0    =>'TOOLBAREND',             0xC1    =>'MMS',

    0xC2    =>'ADDMENU',                0xC3    =>'DELMENU',
    0xC5    =>'SXDI',                   0xC6    =>'SXDB',
    0xCD    =>'SXSTRING',               0xD0    =>'SXTBL',
    0xD1    =>'SXTBRGIITM',             0xD2    =>'SXTBPG',
    0xD3    =>'OBPROJ',                 0xD5    =>'SXISDTM',

    0xD6    =>'RSTRING',                0xD7    =>'DBCELL',
    0xDA    =>'BOOKBOOL',               0xDC    =>'PARAMQRY',
    0xDC    =>'SXEXT',                  0xDD    =>'SCENPROTECT',
    0xDE    =>'OLESIZE',
#P294
    0xDF    =>'UDDESC',                 0xE0    =>'XF',
    0xE1    =>'INTERFACEHDR',           0xE2    =>'INTERFACEEND',
    0xE3    =>'SXVS',                   0xEA    =>'TABIDCONF',
    0xEB    =>'MSODRAWINGGROUP',        0xEC    =>'MSODRAWING',
    0xED    =>'MSODRAWINGSELECTION',    0xEF    =>'PHONETICINFO',
    0xF0    =>'SXRULE',

    0xF1    =>'SXEXT',                  0xF2    =>'SXFILT',
    0xF6    =>'SXNAME',                 0xF7    =>'SXSELECT',
    0xF8    =>'SXPAIR',                 0xF9    =>'SXFMLA',
    0xFB    =>'SXFORMAT',               0xFC    =>'SST',
    0xFD    =>'LABELSST',               0xFF    =>'EXTSST',

    0x100   =>'SXVDEX',                 0x103   =>'SXFORMULA',
    0x122   =>'SXDBEX',                 0x13D   =>'TABID',
    0x160   =>'USESELFS',               0x161   =>'DSF',
    0x162   =>'XL5MODIFY',              0x1A5   =>'FILESHARING2',
    0x1A9   =>'USERBVIEW',              0x1AA   =>'USERVIEWBEGIN',

    0x1AB   =>'USERSVIEWEND',           0x1AD   =>'QSI',
    0x1AE   =>'SUPBOOK',                0x1AF   =>'PROT4REV',
    0x1B0   =>'CONDFMT',                0x1B1   =>'CF',
    0x1B2   =>'DVAL',
#P295
    0x1B5   =>'DCONBIN',                0x1B6   =>'TXO',
    0x1B7   =>'REFRESHALL',             0x1B8   =>'HLINK',
    0x1BA   =>'CODENAME',               0x1BB   =>'SXFDBTYPE',
    0x1BC   =>'PROT4REVPASS',           0x1BE   =>'DV',
    0x200   =>'DIMENSIONS',             0x201   =>'BLANK',

    0x202   =>'Integer',    #Not Documented
    0x203   =>'NUMBER',                 0x204   =>'LABEL',
    0x205   =>'BOOLERR',                0x207   =>'STRING',
    0x208   =>'ROW',                    0x20B   =>'INDEX',
    0x218   =>'NAME',                   0x221   =>'ARRAY',
    0x223   =>'EXTERNNAME',             0x225   =>'DEFAULTROWHEIGHT',

    0x231   =>'FONT',                   0x236   =>'TABLE',
    0x23E   =>'WINDOW2',                0x293   =>'STYLE',
    0x406   =>'FORMULA',                0x41E   =>'FORMAT',

    0x18    =>'NAME',

    0x06    => 'FORMULA',

    0x09    => 'BOF(BIFF2)',            0x209   =>'BOF(BIFF3)',
    0x409   => 'BOF(BIFF4)',            0x809   =>'BOF(BIFF5-7)',

    0x31   =>'FONT',                    0x27E   =>'RK',

    #Chart/Graph
    0x1001 => 'UNITS',                  0x1002 => 'CHART',
    0x1003 => 'SERISES',                0x1006 => 'DATAFORMAT',
    0x1007 => 'LINEFORMAT',             0x1009 => 'MAKERFORMAT',
    0x100A => 'AREAFORMAT',             0x100B => 'PIEFORMAT',
    0x100C => 'ATTACHEDLABEL',          0x100D => 'SERIESTEXT',
    0x1014 => 'CHARTFORMAT',            0x1015 => 'LEGEND',
    0x1016 => 'SERIESLIST',             0x1017 => 'BAR',
    0x1018 => 'LINE',                   0x1019 => 'PIE',
    0x101A => 'AREA',                   0x101B => 'SCATTER',
    0x101C => 'CHARTLINE',              0x101D => 'AXIS',
    0x101E => 'TICK',                   0x101F => 'VALUERANGE',
    0x1020 => 'CATSERRANGE',            0x1021 => 'AXISLINEFORMAT',
    0x1022 => 'CHARTFORMATLINK',        0x1024 => 'DEFAULTTEXT',
    0x1025 => 'TEXT',                   0x1026 => 'FONTX',
    0x1027 => 'OBJECTLINK',             0x1032 => 'FRAME',
    0x1033 => 'BEGIN',                  0x1034 => 'END',
    0x1035 => 'PLOTAREA',               0x103A => '3D',
    0x103C => 'PICF',                   0x103D => 'DROPBAR',
    0x103E => 'RADAR',                  0x103F => 'SURFACE',
    0x1040 => 'RADARAREA',              0x1041 => 'AXISPARENT',
    0x1043 => 'LEGENDXN',               0x1044 => 'SHTPROPS',
    0x1045 => 'SERTOCRT',               0x1046 => 'AXESUSED',
    0x1048 => 'SBASEREF',               0x104A => 'SERPARENT',
    0x104B => 'SERAUXTREND',            0x104E => 'IFMT',
    0x104F => 'POS',                    0x1050 => 'ALRUNS',
    0x1051 => 'AI',                     0x105B => 'SERAUXERRBAR',
    0x105D => 'SERFMT',                 0x1060 => 'FBI',
    0x1061 => 'BOPPOP',                 0x1062 => 'AXCEXT',
    0x1063 => 'DAT',                    0x1064 => 'PLOTGROWTH',
    0x1065 => 'SINDEX',                 0x1066 => 'GELFRAME',
    0x1067 => 'BPOPPOPCUSTOM',
    );
#------------------------------------------------------------------------------
# subDUMP (for Spreadsheet::ParseExcel)
#------------------------------------------------------------------------------
sub subDUMP($$$$)
{
    my($oBook, $bOp, $bLen, $sWk) = @_;
    printf "%04X:%-23s (Len:%3d) : %s\n", 
            $bOp, OpName($bOp), $bLen, unpack("H40",$sWk);
}
#------------------------------------------------------------------------------
# Spreadsheet::ParseExcel->OpName
#------------------------------------------------------------------------------
sub OpName($) {
    my($bOp)=@_;
    return (defined $NameTbl{$bOp})? $NameTbl{$bOp}: 'undef';
}
1;
__END__

